上一篇介紹了Primary Arithmetic,這題會給我們兩個數字,並要我們計算兩個數字加起來,然後再算總共進位幾次,知道意思之後會很好解,但這題就是難在題目可能會看不懂,所以要比較花時間。
今天講解的題目是Jolly Jumpers
先附上程式碼:
import java.util.;
import static java.lang.System.;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int C=sc.nextInt();
int arr[]=new int[C];
for(int i=0;i<arr.length;i++){
arr[i]=sc.nextInt();
}
int a=1;
int arrA[]=new int[C-1];
for(int i=0;i<arr.length-1;i++){
arrA[i]=Math.abs(arr[i]-arr[i+1]);
}
Arrays.sort(arrA);
for(int i=0;i<arrA.length;i++){
if(arrA[i]!=i+1){
a=2;
break;
}
}
if(a==1) System.out.println("Jolly");
else System.out.println("Not jolly");
}
}
};
這題要我們判斷是不是Jolly jumper,也就是說輸入一個N,再輸入N個數字並且左邊減右邊數的絕對值(Math.abs)會在1~N-1之間,並且不會重複,
EX:4 1 4 2 3,4是N,所以範圍會在1~3之間,
|1-4|=3
|4-2|=2
|2-3|=1
,剛好1、2、3,因為出現的答案一定會有N-1個,並且都不會重複,所以最後判斷的時候可以從1開始,到N-1,所以只要先排列好順序(Arrays.sort,排列陣列裡的數字由小到大),這樣最後的判斷只需要判斷1~N-1的每個數字有沒有都出現就可以完成這題的判斷了。
今天的講解就到這裡。
明天也是新的題目,會介紹Vito'sfamily,繼續加油!